<?php

namespace App\Http\Controllers\Api\V1;

use Carbon\Carbon;
use App\Models\DivinationAiRecord;
use Illuminate\Support\Facades\Redis;
use App\Http\Controllers\Api\V1\Resources\TestTopicResource;
use Rainsens\Dinglog\Facades\Dinglog;
use Illuminate\Support\Facades\DB;

class TestsController extends Controller
{
    public function index()
    {

         $prompt ="请按照下面我认可的深度解读回复方式和段落格式作为标准模版对【本卦天水讼 二爻动变 天地丕】的财运做解读，请在聊天中输出，记住说人话（很重要），坚决避免使用“•”符号作为小标题标号，考虑到字数限制每个维度的深度解读可以分三次输出（重要！），第一次输出就是总纲和第一类人群，第二次输出就是第二类和第三类人群，第三次输出就是剩下的第四类和第五类人群，每次输出后段尾以“继续”提示我来点击继续输出，其他要求不变，具体如下：

财运卦象解读任务提示词 · 完整结构（标准版）

请你以《易经》卦象为基础，针对所给出的卦象【本卦天水讼 二爻动变 天地丕】，进行财运方向的结构化、专业化、哲学型深度解读。须严格依照以下要求执行：
一、总体卦象分析总述（必含）
1. 本卦卦辞与象义 —— 在财富之道中的位置（如乾卦象征开源、积势、领导力致富）
2. 动爻爻辞与爻象 —— 反映当前财运的起点、引动、突破口或阻力点
3. 变卦卦辞与象义 —— 表示财局的趋势变化、转化结构或外部诱因
4. 三者之间的关系 —— 在财富结构中的演变路径、张力结构、象数转化逻辑

二、分类展开部分（第二大章节）
请依照以下财运逻辑的现实分类方式进行逐一独立解读，每类内容不可合并压缩，须分别成文：
财运分类建议如下：
（一）固定收入群体（如打工族、公务员、体制类岗位）
（二）经营性收入群体（如个体户、小微创业、带货、自媒体）
（三）资产类收入群体（如房产、股权、长期投资者）
（四）投机型收入路径（如短线股票、币圈、合约、博彩等）
（五）财富转型期/困顿期者（如债务中、投资失败、家庭财政重组期）

三、每类财运状态下的内容结构（请在每类内容结构下都保证下面的数字标号不变不缺，所有内容中坚决避免使用•符号）
每类须展开以下要素，不得省略，结构同事业部分一致：
1. 卦象结构与易理角度
本卦与财运原理的对应
动爻在财路中的象征地位
变卦在财富格局中的诱变与转势逻辑
2. 五行、六亲、世应结构分析
卦与爻之五行对该类财富结构的影响
六亲中“财爻”“官爻”是否得位、旺衰如何
世爻所代表的本人或财运主力与应爻（对手方、市场、客户、家人等）的互动结构
3. 时间应期与财路节奏
卦象推演的时间点（何时可发、何时应守）
动爻/变卦提示的财运高低起伏节奏
关键月份或周期，利于进财/不利出财的临界点
4. 方位与外部财运环境
所属方位对财富流向/资源调动的影响（如乾属西北，是否适宜开拓西北之财路）
外部环境是否为合作型、竞争型、抉择型
资金流动的外向/内卷路径是否清晰
5. 关键人物与影响要素
财运中关键人物特征（性别、年龄、身份）是否影响结构拐点（如投资人、家中长辈、合作方）
是贵人助财，还是“女壮之姤”般的诱惑/风险
如何互动、避损、借力或分利
6. 风险识别与财局转化建议
卦中显现的财富风险结构（如贪快破局、外部干扰、信息误导）
易理中所建议的转势/蓄势/避灾机制
行动建议需具体，适用该类财路的常见陷阱或博弈关系
7. 财运趋势判断与实操建议
是稳守、放手、开源还是断尾求生？
如何借象立势？如何从“象中得利”？
建议包括理财节奏、开支安排、结构调整（如资产重配、合伙撤资等）

四、格式、风格与深度标准（须执行）
1. 风格标准：
全文避免使用•符号；
避免使用未经验证的数据，不要量化数据，严谨幻觉，所有以数字出现的都需要反复自审，没有逻辑支撑的全部不要
禁止生造概念，不要为了炫酷和展示你的能力造新词，用白话说明
禁用套话、禁止“轻飘心理按摩式语言”
风格严谨、克制、结构化、具哲理深度与术数逻辑
内容须具信任感，读者读后应感“说得通、有逻辑、有实据、有启发”
2. 引用与哲学性要求：
适度引用《易经》原文、卦辞、爻辞、《象传》《文言传》等，以增强可信度。适当借古通今，可以引用其他历代经典和名人名言或古诗词，但适可而止，需要辅以白话解释
引典必须“象理有据”，不得堆砌文句造成阅读障碍
所有象义解释必须落地：即象可感、数可推、事可验
时间应期部分需要结合节气或传统时间单位（如月、季），但不要具体到小时或分钟，保持适度的模糊性，符合《易经》的整体观
保持语言流畅，让读者容易理解，同时具备哲学深度，体现《易经》的智慧，而不仅仅是表面的解释。
3. 目标：
每一篇为一套完整财运模型解构方案
具备结构性理解价值、现实指导意义、文化信仰背书、适合传播保存

请以上述内容作为标准对【本卦天水讼 二爻动变 天地丕】做完整的财运分析，如果文字太多超出你的输出字数限制可以以“继续”引导我按继续";
        
        $this->chats(0,$prompt);
       
    }


    public function chats($chatId,$prompt){

         $model="gpt-4o";
         $first = 0;
         $messages = [];
         //if($chatId){
              $records = DivinationAiRecord::query()->get();

              foreach($records as $k=>$v){

                  $messages[$k]['role'] = $v->role;
                  $messages[$k]['content'] = $v->content;
              }

         //}

         if(!$messages){

            $messages = [
                  ['role' => 'system', 'content' => $prompt],
            ];

            $first = 1;
         }
       
         $titleContent = [
               'model' => $model,
               'messages' => $messages,
               'temperature'=>"0.7"
         ]; 

         $titleResult = $this->curl($titleContent);
         
         $titleResult = json_decode($titleResult,true);


         if(isset($titleResult['choices'])){

           
            if(strstr($titleResult['choices'][0]['message']['content'],'继续')){

               $lastInsertArr = [];
               if($first ==1){
                  foreach($messages as $k=>$v){
                     $arr = [
                        'chat_id'=>$titleResult['id'],
                        'content'=> $v['content'],
                        'role'=>$v['role'],
                     ];
                     array_push($lastInsertArr,$arr);

                  }

               }
               $insertZlArr = [
                  'chat_id'=>$titleResult['id'],
                  'content'=> $titleResult['choices'][0]['message']['content'],
                  'role'=>'assistant'
               ];

               array_push($lastInsertArr,$insertZlArr);



               $jxArr = [
                  'chat_id'=>$titleResult['id'],
                  'content'=> '继续',
                  'role'=>'user'
               ];


               array_push($lastInsertArr,$jxArr);
               DivinationAiRecord::insert($lastInsertArr);


               $this->chats($titleResult['id'],$prompt);


               
            }else{
                $insertZlArr = [
                  'chat_id'=>$titleResult['id'],
                  'content'=> $titleResult['choices'][0]['message']['content'],
                  'role'=>'assistant'
               ];

                DivinationAiRecord::insert($insertZlArr);
            }
             
             /* return  $titleResult['choices'][0]['message']['content'];*/

         }else{

            return false;
         }
    }


    public function curl($data){

      $curl = curl_init();
      $data = json_encode($data);


      curl_setopt_array($curl, array(
         CURLOPT_URL => 'https://api.chatanywhere.tech/v1/chat/completions',
         CURLOPT_RETURNTRANSFER => true,
         CURLOPT_ENCODING => '',
         CURLOPT_MAXREDIRS => 10,
         CURLOPT_TIMEOUT => 0,
         CURLOPT_FOLLOWLOCATION => true,
         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
         CURLOPT_CUSTOMREQUEST => 'POST',
         CURLOPT_POSTFIELDS =>$data,
         CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer '.env('CHATGPT_API_KEY'),
            'User-Agent: Apifox/1.0.0 (https://apifox.com)',
            'Content-Type: application/json'
         ),
      ));

      $response = curl_exec($curl);

      
      return $response;
   }
    
}
